import config from '../utils/config';
import { codeType } from '../comps/business';

export default function globalAPI(api) {
  return {
    /*
      以下两个接口均是获取产品列表，在后台，每新建一个产品，都会自动在数据库中插入一条和产品同名、同code的组合根节点
      第一个接口获取的是组合根节点
      第二个接口获取的是产品
      从业务逻辑上来讲，这个两个接口返回的数据应该一致
      从开发逻辑上讲，在数据库表格上做了区分，但要保证返回的数据一致
      默认情况下，系统中用到的产品+组合都是获取的组合的根节点，特殊情况下，取产品节点，单独设置、单独配置
     */
    // 获取组合根节点
    getProducts: (query) => api.get(`${config.interfaces.type5}portfolio-server/portfolioInfo/list`, query),
    // 获取组合根节点，特殊应用在投资建议书应用到资管环境时，还是调用maat的产品
    getProductsWithMAAT: (query) => api.get(`maat/${config.interfaces.type5}portfolio-server/portfolioInfo/list`, query),
    // 获取产品节点
    getProducts1: (query) => api.get(`${config.interfaces.type5}portfolio-server/maatProduct/getProductList`, query),
    // 获取产品节点，适用于资产拆分中的产品管理，该接口将已经添加到资产拆分中的产品进行过滤后返回前端
    getProducts2: (query) => api.get(`${config.interfaces.type5}portfolio-server/maatProduct/getAssetProductList`, query),
    // 获取投资经理权限产品
    getProducts3: (query) => api.get(`${config.interfaces.type5}portfolio-server/simulationProduct/findAll`, query),

    // 不设置rootId，获取产品+组合树形结构
    // 设置rootId，根据产品获取组合
    getProductGroup: (query) => api.get(`${config.interfaces.type5}portfolio-server/portfolioInfo/query-for-self`, query),
    queryProductsAndPortfolios: (query) => api.get(`${config.interfaces.type5}portfolio-server/portfolioInfo/queryProductsAndPortfolios`, query),
    // 获取产品下的组合，特殊应用在投资建议书应用到资管环境时，还是调用maat的组合
    getProductGroupWithMAAT: (query) => api.get(`maat/${config.interfaces.type5}portfolio-server/portfolioInfo/query-for-self`, query),
    // 获取行业
    getIndustry: (query) => api.get(`${config.interfaces.type5}instrument-server/industry/getTree`, query),
    // 获取导出校验id
    getExportId: (query) => api.get(`${config.interfaces.type5}portfolio-server/authentication/generateToken`, query),
    // 计算费用
    getCalculateFee: (query) => api.post(`${config.interfaces.type5}portfolio-server/costmaintenance/mathOneClassification`, query),
    // 后台下指令唯一标识符
    getuniqueKey: (query) => api.get(`${config.interfaces.type1}tradeOperate/getTradeUUID`, query),
    // 获取产品组数据(产品组 组件)
    // 表格
    getProductData: (query) => api.get(`${config.interfaces.type5}portfolio-server/product-group/page-query`, query),
    // 下拉列表
    getProductDataList: (query) => api.get(`${config.interfaces.type5}portfolio-server/product-group/list`, query),
    // 获取证券代码列表
    getSecuritiesList: {
      stock: (query) => api.get(`${config.interfaces.type5}instrument-server/stock/queryCode`, query),
      bond: (query) => api.get(`${config.interfaces.type5}instrument-server/bond/queryCode`, query),
      // （type=0公募  type=1私募）
      fond: (query) => api.get(`${config.interfaces.type5}instrument-server/fund/queryFundCode`, { ...query, type: 0 }),
      // fondGM: query => api.get(`${config.interfaces.type5}instrument-server/fund/queryFundCode`, { ...query, type: 0 }),
      // fondSM: query => api.get(`${config.interfaces.type5}instrument-server/fund/queryFundCode`, { ...query, type: 1 }),
      // 由queryFundCode --> queryGmSmFundCode  因原私募为下游接口查询数据，部分数据缺失，替换为queryGmSmFundCode
      fondGM: (query) => api.get(`${config.interfaces.type5}instrument-server/fund/queryGmSmFundCode`, { ...query, type: 0 }),
      fondSM: (query) => api.get(`${config.interfaces.type5}instrument-server/fund/queryGmSmFundCode`, { ...query, type: 1 }),
      ETF: (query) => api.get(`${config.interfaces.type5}instrument-server/fund/queryEtfCode`, query),
      finaFlocking: (query) => api.get(`${config.interfaces.type1}finaFlocking/queryCode`, query),
      nonstandard: (query) => api.get(`${config.interfaces.type1}nonstandard/queryCode`, query),
      // 全部类型（在该结果中，返回的部分数据没有标明业务类型）
      all: (query) => api.get(`${config.interfaces.type1}odsZgTradeTstockinfo/queryCode`, query),
      // 获取数据库中有业务类型（股票、债券、基金、ETF、理财直融、非标等）的证券代码，是全部类型的子集
      haveBusType: (query) => api.get(`${config.interfaces.type1}odsZgTradeTstockinfo/queryCode`, { ...query, securityType: 'gp,zq,jj,etf,lczr,fb,jyshg,yhjhg,xyshg,ck' }),
      // 获取股债基数据
      gzj: (query) => api.get(`${config.interfaces.type1}odsZgTradeTstockinfo/querySecurities`, { ...query, securityType: 'gp,zq,jj' }),

      // 股票、股指、商品期货、股指期货、国债期货（在场外期权簿记中用）
      // cwqq: query => api.get(`${config.interfaces.type1}odsZgTradeTstockinfo/queryCode`, {...query, underlyingType:'gp,index,cfut,ifut,bfut'}),
      // gp:股票 index:指数 cfut：商品期货 ifut：股指期货 bfut：国债期货
      cwqq: (query) => api.get(`${config.interfaces.type5}instrument-server/maat-inner-security/queryCode`, { ...query, underlyingType: 'gp,index,cfut,ifut,bfut' }),
      // 发行债券（债券网下一级申购，获取所有发行时间和截止时间包含当前时间的所有债券）
      fxBond: (query) => api.get(`${config.interfaces.type5}instrument-server/bondissuerinfo/findInfoByDate`, { ...query }),
      // 获取组合下指定类型的证券
      // inPortfolio: query => api.get(`${config.interfaces.type5}inventoryManagement-server/api/v2/inventory/management/holdInfo/getholdinfobyidandtype`, {...query}),
      inPortfolio: (query) => api.get(`${config.interfaces.type5}inventoryManagement-server/api/v2/inventory/management/holdInfo/getDistinctHoldinfo`, { ...query }),
      // 获取产品下指定的证券
      inProduct: (query) => api.get(`${config.interfaces.type5}portfolio-server/portfolioOrder/queryStockCode`, { ...query }),

      // 查询所有有持仓的标的
      /** securityType(多个时用逗号隔开):0-债券1-股票2-基金 3-银行间融资回购 4-银行间融券回购 5-交易所融资回购，6-交易所融券回购, 7-理财直融，8-存款，9-ETF,11-理财,12-非标,13-协议式正回购,14-协议式逆回购' */
      positioned: (query) => api.get(`${config.interfaces.type5}instrument-server/maat-hold-security/queryCode`, { ...query }),
      // 获取全市场债券，以及某租户下的非标和理财直融（主要用于SPPI测试）
      BondNonstandardFinaFlocking: (query) => api.get(`${config.interfaces.type5}instrument-server/maat-inner-security/queryBondAlikeInfo`, { ...query }),
      // 获取债券，回购，理财直通，非标数据，多基金页面使用
      moreFunds: (query) => api.get(`${config.interfaces.type1}productGroupTradeInstruction/findCodeInfo`, query),
      // 资产管理计划维护
      zgtzptPlan: (query) => api.get(`${config.interfaces.type1}zgtzptPlanInfoPro/queryCode`, query),
      // 委外投资计划维护
      outsourcing: (query) => api.get(`${config.interfaces.type5}portfolio-server/entrustedinvestment/queryCode`, query),
      // 股指期货
      stockIndexFutures: (query) => api.get(`${config.interfaces.type5}instrument-server/futBasicinfo/queryCode`, query),
      // 债券（数据源来自于系统管理/业务参数维护/债券发行信息维护 + 市场已发行债券）

      allBond: (query) => api.get(`${config.interfaces.type5}instrument-server/bndRegulation/getTradingcodeInfo`, query),
      ZCGLJHandWWTZ: (query) => api.get(`${config.interfaces.type5}instrument-server/regulationInfo/getTradingcode`, query),
    },
    // 获取证券详情
    getSecuritiesDetail: {
      stock: (query) => api.get(`${config.interfaces.type5}instrument-server/stock/queryStockDetail`, query),
      bond: (query) => api.get(`${config.interfaces.type5}instrument-server/bond/queryBondDetail`, query),
      fond: (query) => api.get(`${config.interfaces.type5}instrument-server/fund/queryFundDetail`, query),
    },
    // 新增债券类指令
    addOrder: (query) => api.post(`${config.interfaces.type1}bondTrade/saveInstruction`, query),
    // 新增债券类簿记
    addTradeBook: (query) => api.post(`${config.interfaces.type1}bondTrade/saveInstruction2`, query),
    // 虚拟标的新增
    virtualAddTradeBook: (query) => api.post(`${config.interfaces.type1}bondTrade/virtualAddTradeBook111`, query),
    // 存续管理
    addexistence: (query) => api.post(`${config.interfaces.type1}bondTrade/saveInstruction3`, query),
    // 判断组合是否已进行指令配置
    isAccountConfigured: (query) => api.get(`${config.interfaces.type5}portfolio-server/portfolioInfo/isAccountConfigured`, query),
    // 资管判断组合是否已进行指令配置
    isAccountConfiguredZG: (query) => api.get(`maat/${config.interfaces.type5}portfolio-server/portfolioInfo/isAccountConfigured`, query),
    // 获取省市信息
    locations: (query) => api.get(`${config.interfaces.type5}instrument-server/location/getProvince`, query),
    // 试算接口
    trialData: (query) => api.post(`${config.interfaces.type5}risk-server/riskCtrl/bookKeepingRiskCheck`, query),
    // 债券簿记试算时获取全价
    trialfullPrice: (query) => api.post(`${config.interfaces.type1}bondTrade/getBondFullPrice`, query),
    // 获取基准列表（该接口是以前的老接口，未按新要求进行整改）
    getBenchMark: (query) => api.post(`${config.interfaces.type5}portfolio-server/benchmark/queryByPage`, query),

    // 获取系列产品下拉列表
    getSeriesProducts: (query) => api.get(`${config.interfaces.type1}asset-split/asset-split-list-basic-info/asset-split-list-basic-info-list`, query),

    // 获取交易对手下拉列表信息（指令、簿记等用的交易对手，数据来自于全市场
    getTradingCompany: (query) => api.get(`${config.interfaces.type1}bondTrade/queryCounterparty`, query),
    getTradingCompany1: (query) => api.get(`${config.interfaces.type1}bondTrade/queryCounterpartyById`, query),

    // 获取指定枚举
    getDictionary: (query) => api.post(`${config.interfaces.type1}dict/queryDictByKeys`, query),
    // 获取指定枚举方法二
    findDictByKey: (query) => api.get(`${config.interfaces.type1}dict/findAllDictByKey`, query),
    // 角色列表
    getRoleList: (query) => api.get(`${config.interfaces.type5}portfolio-server/role/condition`, query),
    // 用户列表
    getUserList: (query) => api.get(`${config.interfaces.type5}portfolio-server/user/findAll`, query),
    // 债券价格试算
    priceCalculation: (query) => api.get(`${config.interfaces.type1}bondTrade/getRate`, query),

    // 点击菜单向后台发送数据
    getMenuClickNum: (query) => api.post(`${config.interfaces.type5}portfolio-server/pmssaUge/save`, query),
    // 获取发行人下拉列表
    getIssuerList: (query) => api.get(`${config.interfaces.type5}instrument-server/bondissuerinfo/issuerInfo`, query),
    // 获取前一交易日
    getTradingDate: (query) => api.get(`${config.interfaces.type5}portfolio-server/otcOptionRiskPressureScene/previousTradingDay`, query),
    // 获取前一周交易日
    getSevenTradeDate: (query) => api.get(`${config.interfaces.type1}commonDate/getSevenTradeDate`, query),
    // 获取token
    saveToken: (query) => api.get(`${config.interfaces.type1}temporaryToken/saveToken`, query),
    // 获取token 资管页面
    saveTokenWITHMAAT: (query) => api.get(`maat/${config.interfaces.type1}temporaryToken/saveToken`, query),
    // 以下是global model页面调用的接口
    // 获取所有数字字典
    findAllDict: (query) => api.get(`${config.interfaces.type1}dict/findAllDict`, query),
    // 获取部门列表
    getDepartmentList: (query) => api.get(`${config.interfaces.type1}bondsSoldBack/queryProductDept`, query),
    // 获取产品是否有净值分析
    getNetAssets: (query) => api.get(`${config.interfaces.type3}yieldanalysis/netAssets`, query),
    // 获取流程图公式对应的描述信息
    getBpmnRemarkInfo: (query) => api.post(`${config.interfaces.type1}flow/getFlowDesc`, query),
    // 保存流程图公式对应的描述信息
    saveBpmnRemarkInfo: (query) => api.post(`${config.interfaces.type1}flow/saveFlowDesc`, query),
    // 获取产品名称接口
    getProductNameData: {
      // 产品管理
      productManage: (query) => api.post(`${config.interfaces.type5}portfolio-server/maatProduct/productManageList`, query),
      // 非标准化债权类资产
      nonstandardzc: (query) => api.get(`${config.interfaces.type5}instrument-server/nonstandard/queryTable`, query),
      // 非标准化债权类投资
      nonstandardtz: (query) => api.get(`${config.interfaces.type5}instrument-server/nonstandard/queryInveTypeTable`, query),
      // 资产管理计划维护
      zgtzptPlan: (query) => api.get(`${config.interfaces.type1}zgtzptPlanInfoPro/queryTable`, query),
      // 理财直融
      finaFlocking: (query) => api.post(`${config.interfaces.type1}directFinancingTool/queryDFToolList`, query),
    },
    // 获取租户列表
    getTenantList: (query) => api.get(`${config.interfaces.type5}portfolio-server/tenant/page-query`, query),
    // 更新未读消息---定价复核、估值核对、压力测试报告、现金管理报告未读消息
    updateUnreadDate: (query) => api.get(`${config.interfaces.type5}portfolio-server/maatMessage/updateMaatMessage`, query),
    // 查询当前页面视频列表
    queryVeidoList: (query) => api.get(`${config.interfaces.type11}systemVideo/findSystemVideoByBusinessField`, query),
    // 查询时间区间
    queryDateRange: (query) => api.get(`${config.interfaces.type5}portfolio-server/latestFundPositionDate/DateRangeOfTheLatestCapitalPosition`, query),
    // 查询时间区间barra
    queryDateRangeBarra: (query) => api.get(`${config.interfaces.type5}maat-workstation/barraProduct/getBeginEndTime`, query),

    // 获取债券代码 模糊查询
    queryBond: (query) => api.get(`${config.interfaces.type5}instrument-server/bond/queryBondLike`, query),
    // 获取债券代码 基本信息
    basicInfo: (query) => api.get(`${config.interfaces.type5}instrument-server/bond/basicInfo`, query),
    // 债券价格试算
    priceTrial: (query) => api.get(`${config.interfaces.type5}instrument-server/bond/priceTrial`, query),
    // 获取假日
    getHolidayByMonth: (query) => api.get(`${config.interfaces.type5}instrument-server/controlNonTradingday/queryControlNonTradingday`, query),
    // 获取可用资金
    queryAvailableFund: (query) => api.get(`${config.interfaces.type13}api/v2/inventory/finance/queryAvailable`, query),
    // 获取可用持仓
    queryAvailablePosition: (query) => api.get(`${config.interfaces.type13}api/v2/inventory/hold/queryAvailable`, query),
    // 后台下指令唯一标识符 新接口
    getuniqueKeyNew: (query) => api.get(`${config.interfaces.type14}api/v1/instruction/common/genInstructionId`, query),
    // 簿记下达 接口罗列
    addOrderObj: {
      // A股簿记
      stockBj: (query) => api.post(`${config.interfaces.type14}api/v1/instruction/genInstruction/stock`, query),
      // 资产管理计划簿记
      assetBj: (query) => api.post(`${config.interfaces.type14}api/v1/instruction/genInstruction/amp`, query),
      // 非标 非理财直融簿记
      nonStandBj: (query) => api.post(`${config.interfaces.type14}api/v1/instruction/genInstruction/nsa`, query),
    },
    // 验资验券接口
    onCheck: (query) => api.get(`${config.interfaces.type14}api/v1/instruction/instructionStatus/queryCheckStatus`, query),
    // 查询簿记下达结果
    queryResult: (query) => api.get(`${config.interfaces.type14}api/v1/instruction/instructionStatus/queryBookStatus`, query),
  };
}
